____ _ _ _ _
| _ \ ___ | |_ (_) _ __ ___ __| | (_) __ _
| |_) | / _ \ | __| | | | '_ \ / _ \ / _| | | | / _ |
| _ < | __/ | |_ | | | |_) | | __/ | (_| | | | | (_| |
|_| \_\ \___| \__| |_| | .__/ \___| \__,_| |_| \__,_|
|_|
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
ÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻÂŻ
Softwaretest
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
top
Ein Softwaretest prßft und bewertet Software auf Erfßllung der fßr ihren Einsatz definierten Anforderungen und misst ihre Qualität. Die gewonnenen Erkenntnisse werden zur Erkennung und Behebung von Softwarefehlern genutzt. Tests während der Softwareentwicklung dienen dazu, die Software mÜglichst fehlerfrei in Betrieb zu nehmen.
Diese fĂźr eine einzelne TestmaĂnahme verwendete Bezeichnung wird auch â im Sinn von âTestprozessâ â fĂźr mehrere oder die Gesamtheit von MaĂnahmen zur ĂberprĂźfung der Softwarequalität (inkl. Planung, Vorbereitung, Steuerung, DurchfĂźhrung, Dokumentation usw.) verwendet; siehe auch Definitionen.
Den Nachweis, dass keine Fehler (mehr) vorhanden sind, kann das Softwaretesten nicht erbringen. Es kann lediglich fallibilistisch feststellen, dass bestimmte Testfälle erfolgreich waren. Edsger W. Dijkstra schrieb hierzu: âProgram testing can be used to show the presence of bugs, but never show their absence!â (Das Testen von Programmen kann die Existenz von Fehlern zeigen, aber niemals deren Nichtvorhandensein). Der Grund ist, dass alle Programmfunktionen und auch alle mĂśglichen Werte in den Eingabedaten in allen ihren Kombinationen getestet werden mĂźssten â was (auĂer bei sehr einfachen Testobjekten) praktisch nicht mĂśglich ist. Aus diesem Grund beschäftigen sich verschiedene Teststrategien und -konzepte mit der Frage, wie mit einer mĂśglichst geringen Anzahl von Testfällen eine groĂe Testabdeckung zu erreichen ist.
Pol, Koomen, Spillnercite-ref-pks-1-0[1] erläutern 'Testen' wie folgt: âTests sind nicht die einzige MaĂnahme im Qualitätsmanagement der Softwareentwicklung, aber oft die letztmĂśgliche. Je später Fehler entdeckt werden, desto aufwändiger ist ihre Behebung, woraus sich der Umkehrschluss ableitet: Qualität muss (im ganzen Projektverlauf) implementiert und kann nicht 'eingetestet' werden.â Und: âBeim Testen in der Softwareentwicklung wird i. d. R. eine mehr oder minder groĂe Fehleranzahl als 'normal' unterstellt oder akzeptiert. Hier herrscht ein erheblicher Unterschied zur Industrie: Dort werden im Prozessabschnitt 'Qualitätskontrolle' oft nur noch in Extremsituationen Fehler erwartet.â
Contents
⢠Definition
⢠Standardisierung
⢠Motivation
⢠Ziele
⢠Teststufen
⢠Komponententest
⢠Integrationstest
⢠Systemtest
⢠Abnahmetest
⢠Testplanung
⢠Testvorbereitung
⢠Testauswertung
⢠Testabschluss
⢠Teststrategie
⢠Dokumentation
⢠Literatur
⢠Weblinks
⢠Einzelnachweise
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Definition
Es gibt unterschiedliche Definitionen fĂźr den Softwaretest:
Nach ANSI/IEEE Std. 610.12-1990cite-ref-2[2] ist das Testen (engl. âTestingâ) âthe process of operating a system or component under specified conditions, observing or recording the results and making an evaluation of some aspects of the system or component.â
Eine andere Definition liefert Ernst Denertcite-ref-3[3], wonach der âTest [âŚ] der ĂźberprĂźfbare und jederzeit wiederholbare Nachweis der Korrektheit eines Softwarebausteines relativ zu vorher festgelegten Anforderungenâ ist.
Eine weitergehende Definition verwenden Pol, Koomen und Spillnercite-ref-pks-1-1[1]: Unter Testen versteht man den Prozess des Planens, der Vorbereitung und der Messung, mit dem Ziel, die Eigenschaften eines IT-Systems festzustellen und den Unterschied zwischen dem tatsächlichen und dem erforderlichen Zustand aufzuzeigen. Bemerkenswert hierbei: Als MessgrĂśĂe gilt 'der erforderliche Zustand', nicht nur die (mĂśglicherweise fehlerhafte) Spezifikation.
'Testen' ist ein wesentlicher Teil im Qualitätsmanagement von Projekten der Softwareentwicklung.
Standardisierung
Im September 2013 wurde die Norm ISO/IEC/IEEE 29119 Software Testing verÜffentlicht, die international erstmals viele (ältere) nationale Normen des Softwaretestens, wie z. B. die IEEE 829, zusammenfasst und ersetzt. Die Normreihe ISO/IEC 25000 ergänzt die Seite des Software-Engineering als Leitfaden fßr (die gemeinsamen) Qualitätskriterien und ersetzt die Norm ISO/IEC 9126.
Motivation
In der Softwareentwicklung wird der Test verwendet, um den Verlust von Geld, Zeit, Menschenleben oder anderen materiellen oder immateriellen Gßtern, die durch mangelhafte Qualität eines Softwaresystems verursacht werden, zu minimieren.cite-ref-0-4-1[4] Durch das systematische Testen einer Software während der Entwicklung kÜnnen Fehler frßh festgestellt werden, was deren Fehlerkosten nach der Rule of ten minimiert.cite-ref-rule-of-10-5-0[5]
Ziele
Globales Ziel des Softwaretestens ist das Messen der Qualität des Softwaresystems. Dabei dienen definierte Anforderungen als Prßfreferenz, mittels derer ggf. vorhandene Fehler aufgedeckt werden. ISTQB: Der Wirkung von Fehlern (im produktiven Betrieb) wird damit vorgebeugt.
Ein Rahmen fßr diese Anforderungen kÜnnen die Qualitätsparameter gem. ISO/IEC 9126 sein, denen jeweils konkrete Detailanforderungen z. B. zur Funktionalität, Bedienbarkeit, Sicherheit usw. zugeordnet werden kÜnnen. Im Besonderen ist auch die Erfßllung gesetzlicher und/oder vertraglicher Vorgaben nachzuweisen.
Individuelle Testziele: Da das Softwaretesten aus zahlreichen EinzelmaĂnahmen besteht, die i. d. R. Ăźber mehrere Teststufen hinweg und an vielen Testobjekten ausgefĂźhrt werden, ergeben sich individuelle Testziele fĂźr jeden einzelnen Testfall und fĂźr jede Teststufe â wie z. B. Rechenfunktion X in Programm Y getestet, Schnittstellentest erfolgreich, Wiederinbetriebnahme getestet, Lasttest erfolgreich, Programm XYZ getestet usw.
Teststufen
Die Einordnung der Teststufen (zum Teil auch Testzyklen genannt) folgt gemäà V-Modell dem Entwicklungsstand des Systems. Ihr Inhalt orientiert sich dabei an den Entwicklungsstufen von Projekten. Dabei wird in jeder Teststufe (rechte Seite im 'V') gegen die SystementwĂźrfe und Spezifikationen der zugehĂśrigen Entwicklungsstufe (linke Seite) getestet, d. h., die Testziele und Testfälle basieren auf den jeweiligen Entwicklungsergebnissen. Dieses Vorgehensprinzip ist allerdings nur anwendbar, wenn evtl. in späteren Entwicklungsstufen vorgenommene Ănderungen in den älteren Spezifikationen nachgefĂźhrt wurden.
In der Realität werden diese Ausprägungen, abhängig von der GrĂśĂe und Komplexität des Software-Produkts, weiter untergliedert. So kĂśnnten beispielsweise die Tests fĂźr die Entwicklung von sicherheitsrelevanten Systemen in der Transportsicherungstechnik folgendermaĂen untergliedert sein: Komponententest auf dem Entwicklungsrechner, Komponententest auf der Ziel-Hardware, Produkt-Integrationstests, Produkttest, Produkt-Validierungstests, System-Integrationstest, Systemtest, System-Validierungstests, Feldtests und Akzeptanztest.
Die nachfolgend beschriebenen Teststufen sind in der Praxis oft nicht scharf voneinander abgegrenzt, sondern kĂśnnen, abhängig von der Projektsituation, flieĂend oder Ăźber zusätzliche Zwischenstufen verlaufen. So kĂśnnte zum Beispiel die Abnahme des Systems auf der Grundlage von Testergebnissen (Reviews, Testprotokolle) von Systemtests erfolgen.
Komponententest
Der Modultest, auch Komponententest oder Unittest genannt, ist ein Test auf der Ebene innerer, abgrenzbarer Einzelteile der Software wie beispielsweise Module, Unterprogramme, Units oder Klassen. Testziel dieser häufig durch den Softwareentwickler selbst durchgefßhrten Tests ist der Nachweis der technischen Lauffähigkeit und korrekter (Teil-)Ergebnisse. Mittels Unittests kÜnnen im Schnitt 30 Prozent der Fehler erkannt werden;cite-ref-code-complete-6-0[6] bei der Verwendung von testgetriebener Entwicklung 45 %.cite-ref-7[7] Auf Grund der Tatsache, dass Unittests die Fehler bereits während der Entwicklungsphase erkennen, sind die durch Unittests vermiedenen Fehlerkosten gemäà der Rule of 10cite-ref-rule-of-10-5-1[5] um ein Vielfaches hÜher als bei späteren Teststufen, was Unittests zur effizientesten Teststufe machen.
Integrationstest
Der Integrationstest bzw. Interaktionstest testet die Zusammenarbeit voneinander abhängiger Komponenten. Der Testschwerpunkt liegt auf den Schnittstellen der beteiligten Komponenten und soll korrekte Ergebnisse ßber komplette Abläufe hinweg nachweisen. Mittels Integrationstests kÜnnen im Schnitt 35 % der Fehler erkannt werden.cite-ref-code-complete-6-1[6]
Systemtest
Der Systemtest ist die Teststufe, bei der das gesamte System gegen die gesamten Anforderungen (funktionale und nicht-funktionale Anforderungen) getestet wird. GewÜhnlich findet der Test auf einer Testumgebung statt und wird mit Testdaten durchgefßhrt. Die Testumgebung soll die Produktivumgebung des Kunden simulieren, d. h. ihr mÜglichst ähnlich sein. In der Regel wird der Systemtest durch die realisierende Organisation durchgefßhrt. Mittels Systemtests kÜnnen im Schnitt 40 % der Fehler erkannt werden.cite-ref-code-complete-6-2[6]
Abnahmetest
Ein Abnahmetest, Verfahrenstest, Akzeptanztest oder auch User Acceptance Test (UAT) ist das Testen der gelieferten Software durch den Kunden. Der erfolgreiche Abschluss dieser Teststufe ist meist Voraussetzung fĂźr die rechtswirksame Ăbernahme der Software und deren Bezahlung. Dieser Test kann unter Umständen (z. B. bei neuen Anwendungen) bereits auf der Produktionsumgebung mit Kopien aus Echtdaten durchgefĂźhrt werden.
Die Anzahl der Akzeptanztests sollte sich am Umfang der Software orientieren.cite-ref-8[8]
Testprozess / Testphasen
Pol, Koomen und Spillnercite-ref-pks-1-3[1] beschreiben im Kap. 8.1 âTMapâ ein Vorgehen nach einem Phasenmodell. Sie nennen dieses Vorgehen Testprozess, bestehend aus den Testphasen Testvorbereitung, Testspezifikation, TestdurchfĂźhrung und -Auswertung, Testabschluss. Parallel sieht der Testprozess die Rahmenfunktionen Planung & Verwaltung vor. Das Vorgehen sei generisch, d. h., es wird â jeweils nach Erfordernis â fĂźr unterschiedliche Ebenen angewendet, fĂźr das Gesamtprojekt, fĂźr jede Teststufe und letztlich je Testobjekt und Testfall.
Bei anderen Autoren oder Instituten finden sich zum Teil andere Gruppierungen und andere Bezeichnungen, die aber inhaltlich nahezu identisch sind. Z. B. wird bei ISTQB der Testprozess mit folgenden Hauptaktivitäten definiert:cite-ref-9[9] Testplanung und Steuerung, Testanalyse und Testentwurf, Testrealisierung und TestdurchfĂźhrung, Bewertung von Endekriterien und Bericht, Abschluss der Testaktivitäten. Die einzelnen Aktivitäten und deren Reihenfolge, die (im Testprozess festgelegt) fĂźr die einzelnen Testobjekte auszufĂźhren sind â ggf. mehrfach, z. B. bei Testwiederholung/Regressionstest â nennt ISTQB âTestzyklusâ.
Testaktivitäten werden (nach Pol, Koomen und Spillnercite-ref-pks-1-4[1]) rollenspezifisch zu sog. Testfunktionen zusammengefasst: Testen, Testmanagement, Methodische Unterstßtzung, Technische Unterstßtzung, Funktionale Unterstßtzung, Verwaltung, Koordination und Beratung, Anwendungsintegrator, TAKT-Architekt und TAKT-Ingenieur (bei Einsatz von Testautomatisierung; TAKT = Testen, Automatisierung, Kenntnisse, Tools). Diese Funktionen (Rollen) haben Schwerpunkte in bestimmten Testphasen; sie kÜnnen im Projekt selbst eingerichtet sein oder ßber spezialisierte Organisationseinheiten einbezogen werden.
Personenbezogen kĂśnnen u. a. die folgenden Rollen beim Testen unterschieden werden:
⢠Testmanager (Fßhrung): Der Testmanager entwickelt die Teststrategie, plant die Ressourcen und dient als Ansprechperson fßr Projektleitung und Management. Wichtige Charakterzßge sind dabei Verlässlichkeit und Integrität.
⢠Testarchitekt, Testengineer: Der Testengineer unterstßtzt den Testmanager bei der Entwicklung der Teststrategie. Zudem ist er fßr die optimale Auswahl der Testmethoden und Testwerkzeuge zuständig. Die Planung und Entwicklung einer projektspezifischen Testinfrastruktur liegt auch in seinem Aufgabenbereich.
⢠Testanalyst: Der Testanalyst bestimmt die nÜtigen Testsszenarien, indem er sie aus den Anforderungen ableitet. Zudem definiert er welche Testdaten notwendig sind.
⢠Testdatenverantwortlicher: Der Testdatenverantwortlicher kßmmert sich um die Beschaffung und Aktualität der Testdaten. Er arbeitet eng mit dem Testanalyst zusammen. Diese Rolle wird meist unterschätzt, aber ohne die richtigen Testdaten, ist die Aussage der Testfälle nutzlos.
⢠Tester (Fachperson): Der Tester hat die Aufgabe die Tests zuverlässig und exakt auszufßhren. Zudem soll er die Testergebnisse präzise und wertfrei dokumentieren. Bei der Fehlersuche kann er die Testanalysten und IT-Spezialisten unterstßtzen. Allgemein wird oft diese Rolle als Tester angesehen, wobei die anderen Rollen vergessen werden.
Testplanung
Ergebnis dieser i. d. R. parallel zur Softwareentwicklung stattfindenden Phase ist i. W. der Testplan. Er wird fĂźr jedes Projekt erarbeitet und soll den gesamten Testprozess definieren. In TMap wird dazu ausgefĂźhrt: Sowohl die zunehmende Bedeutung von IT-Systemen fĂźr Betriebsprozesse als auch die hohen Kosten des Testens rechtfertigen einen optimal verwaltbaren und strukturierten Testprozess. Der Plan kann und soll je Teststufe aktualisiert und konkretisiert werden, sodass die Einzeltests im Umfang zweckmäĂig und effizient ausgefĂźhrt werden kĂśnnen.
Inhalte im Testplan sollten z. B. folgende Aspekte sein: Teststrategie (Testumfang, Testabdeckung, Risikoabschätzung); Testziele und Kriterien fĂźr Testbeginn, Testende und Testabbruch â fĂźr alle Teststufen; Vorgehensweise (Testarten); Hilfsmittel und Werkzeuge zum Testen; Dokumentation (Festlegen der Art, Struktur, Detaillierungsgrad); Testumgebung (Beschreibung); Testdaten (allgemeine Festlegungen); Testorganisation (Termine, Rollen), alle Ressourcen, Ausbildungsbedarf; Testmetriken; Problemmanagement.
Testvorbereitung
Aufbauend auf der Testplanung werden die dort festgelegten Sachverhalte zur operativen Nutzung vorbereitet und zur VerfĂźgung gestellt.
Beispiele fĂźr einzelne Aufgaben (global und je Teststufe): Bereitstellen der Dokumente der Testbasis; VerfĂźgbar machen (z. B. Customizing) von Werkzeugen fĂźr das Testfall- und Fehlermanagement; Aufbauen der Testumgebung(en) (Systeme, Daten); Ăbernehmen der Testobjekte als Grundlage fĂźr Testfälle aus der Entwicklungsumgebung in die Testumgebung; Benutzer und Benutzerrechte anlegen; ...
Beispiele fĂźr Vorbereitungen (fĂźr Einzeltests): Transfer / Bereitstellung von Testdaten bzw. Eingabedaten in die Testumgebung(en).
Testspezifikation
Hier werden alle Festlegungen und Vorbereitungen getroffen, die erforderlich sind, um einen bestimmten Testfall (unterscheide logischer und konkreter Testfall) ausfĂźhren zu kĂśnnen.
Beispiele fßr einzelne Aktivitäten: Testfallfindung und Testfalloptimierung (orientiert an Testzielen und ggf. Testpfad-Kategorien); Beschreiben je Testfall (was genau ist zu testen); Vorbedingungen (inkl. Festlegen von Abhängigkeiten zu anderen Testfällen); Festlegen und Erstellen der Eingabedaten; Festlegungen zum Testablauf und zur Testreihenfolge; Festlegen Soll-Ergebnis; Bedingung(en) fßr 'Test erfßllt'; ...
TestdurchfĂźhrung
Bei dynamischen Tests wird dazu das zu testende Programm ausgefĂźhrt, in statischen Tests ist es Gegenstand analytischer PrĂźfungen.
Beispiele fĂźr einzelne Aktivitäten: Auswählen der zu testenden Testfälle; Starten des PrĂźflings â manuell oder automatisch; Bereitstellen der Testdaten und des Ist-Ergebnisses zur Auswertung; Umgebungsinformationen fĂźr den Testlauf archivieren, ...
Weitere Anmerkung: Ein Testobjekt sollte nicht vom Entwickler selbst, sondern von anderen, wenn mÜglich unabhängigen, Personen getestet werden.
Testauswertung
Die Ergebnisse aus durchgefĂźhrten Tests (je Testfall) werden ĂźberprĂźft. Dabei wird das Ist-Ergebnis mit dem Soll-Ergebnis verglichen und anschlieĂend eine Entscheidung Ăźber das Testergebnis (ok oder Fehler) herbeigefĂźhrt.
⢠Bei Fehler: Klassifizierung (z. B. nach Fehlerursache, Fehlerschwere etc., siehe auch Fehlerklassifizierung), angemessene Fehlerbeschreibung und -Erläuterung, Ăberleitung ins Fehlermanagement; Testfall bleibt offen
⢠Bei OK: Testfall gilt als erledigt
⢠Fßr alle Tests: Dokumentation, Historisieren / Archivieren von Unterlagen
Testabschluss
Abschluss-Aktivitäten finden auf allen Testebenen statt: Testfall, Testobjekt, Teststufe, Projekt. Der Status zum Abschluss von Teststufen wird (z. B. mit Hilfe von Teststatistiken) dokumentiert und kommuniziert, Entscheidungen sind herbeizufßhren und Unterlagen zu archivieren. Grundsätzlich ist dabei zu unterscheiden nach:
⢠Regel-Abschluss = Ziele erreicht, nächste Schritte einleiten
⢠Alternativ mÜglich: Teststufe ggf. vorzeitig beenden oder unterbrechen (aus diversen, zu dokumentierenden Grßnden); in Zusammenarbeit mit dem Projektmanagement
Klassifikation fĂźr Testarten
In kaum einer Disziplin der Softwareentwicklung hat sich, der Komplexität der Aufgabe âTestenâ entsprechend, eine derart groĂe Vielfalt an Begriffen gebildet wie beim Softwaretest. Dies trifft besonders auch fĂźr die Bezeichnungen zu, mit denen Testarten/Testvarianten benannt werden.
Sie leiten sich in der Regel aus den unterschiedlichen Situationen ab, in denen sie ausgefĂźhrt werden sowie aus den Testzielen, auf die sie ausgerichtet sind. Dadurch ergibt sich eine Vielzahl an Begriffen. Dieser Vieldimensionalität entsprechend kĂśnnen fĂźr einen konkreten Test die Bezeichnungen mehrerer Testarten zutreffen. Beispiel: Ein Entwicklertest kann gleichzeitig ein dynamischer Test, Blackbox-Test, Fehlertest, Integrationstest, Ăquivalenzklassentest, Batchtest, Regressionstest etc. sein.
In Literatur und Praxis werden diese Bezeichnungen meist nur teilweise benutzt, zum Teil auch mit in Details abweichenden Bedeutungen. So kĂśnnten im praktischen Einsatz bestimmte Tests (zum Beispiel) einfach als Funktionstest bezeichnet werden â und nicht als Fehlertest, Batchtest, High-Level-Test etc. Die Testeffizienz wird hierdurch nicht beeinträchtigt â wenn die Tests ansonsten zweckmäĂig geplant und ausgefĂźhrt werden. Durchaus im Sinn effizienter Testprozesse ist es dabei, mehrere Testziele mit nur einem Testfall abzudecken, z. B. dabei die Benutzeroberfläche, eine Rechenformel, korrekte WertebereichsprĂźfungen und die Datenkonsistenz zu prĂźfen.
Ein Mittel zum Verständnis dieser Begriffsvielfalt ist die nachfolgend angewendete Klassifikation â bei der Testarten nach unterschiedlichen Kriterien gegliedert, dazu passende Testarten aufgefĂźhrt und ihre Testziele kurz erläutert werden.
Klassifikation nach der PrĂźftechnik
Analytische MaĂnahmen
Als analytische MaĂnahmen werden Softwaretests definiert, die erst nach Erstellung des PrĂźfgegenstandes durchgefĂźhrt werden kĂśnnen. Liggesmeyercite-ref-10[10] klassifiziert diese Testmethoden folgendermaĂen (verkĂźrzt und z. T. kommentiert):
Statischer Test (Test ohne ProgrammausfĂźhrung)
⢠Review
⢠Statische Code-Analyse, auch Formale Verifikation
Dynamischer Test (Test mit ProgrammausfĂźhrung)
⢠Kontrollflussorientiert (MaĂ fĂźr die Ăberdeckung des Kontrollflusses)
⢠Anweisungs-, Zweig-, Bedingungs- und Pfadßberdeckungstests
⢠Datenflussorientiert (MaĂ fĂźr die Ăberdeckung des Datenflusses)
⢠Defs-/Uses Kriterien, Required k-Tupels-Test, Datenkontext-Ăberdeckung
⢠Funktionsorientierter Test (Test gegen eine Spezifikation)
⢠Funktionale Ăquivalenzklassenbildung, Zustandsbasierter Test, Ursache-Wirkung-Analyse (z. B. mittels Ursache-Wirkungs-Diagramm), Syntaxtest, Transaktionsflussbasierter Test, Test auf Basis von Entscheidungstabellen
⢠Positivtest (versucht die Anforderungen zu verifizieren) und Negativtest (prßft die Robustheit einer Anwendung)
⢠Diversifizierender Test (Vergleich der Testergebnisse mehrerer Versionen)
⢠Regressionstest, Back-To-Back-Test, Mutationen-Test
⢠Sonstige (nicht eindeutig zuzuordnen, bzw. Mischformen)
⢠Bereichstest bzw. Domain Testing (Verallgemeinerung der Ăquivalenzklassenbildung), Error guessing, Grenzwertanalyse, Zusicherungstechniken
Konstruktive MaĂnahmen
Den analytischen MaĂnahmen, bei denen Testobjekte âgeprĂźftâ werden, gehen die sog. konstruktiven MaĂnahmen voraus, die bereits im Verlauf der Software-Erstellung zur Qualitätssicherung betrieben werden. Beispiele: Anforderungsmanagement, Prototyping, Review von Pflichtenheften.
Spezifikationstechniken
Weiterhin sind von den PrĂźftechniken die Spezifikationstechniken zu unterscheiden: Sie bezeichnen keine Testarten, mit denen Testobjekte aktiv geprĂźft werden, sondern nur die Verfahren, nach denen die Tests vorbereitet und spezifiziert werden.
Beispielbezeichnungen sind Ăquivalenzklassentest und Ăberdeckungstest; Testfälle werden nach diesen Verfahren identifiziert und spezifiziert, konkret ĂźberprĂźft jedoch z. B. in einem Integrationstest, Batchtest, Sicherheitstest etc.
Klassifikation nach Art und Umfang der Testobjekte
Debugging
fĂźr einzelne Codeteile: ĂberprĂźfen des Programmcodes unter schrittweiser oder abschnittsweiser Kontrolle und ggf. Modifikation des Entwicklers.
Modultest, Unittest oder Komponententest
Testen kleinst-mÜglicher testbarer Funktionalitäten isoliert von anderen; gilt auch als eine Teststufe.
Integrationstest
Test der Funktionalität bei der Zusammenarbeit voneinander abhängiger Komponenten; wird auch Interoperabilitätstest genannt; gilt auch als eine Teststufe.
Systemtest
Teststufe mit Tests Ăźber das gesamte System.
Testen ob die Schnittstellen zwischen sich gegenseitig aufrufenden Komponenten korrekt (d. h. insbesondere bzgl. der mĂśglichen Parameter-Kombinationen) implementiert sind; meist gem. der Spezifikation, beispielsweise mit Hilfe von Mock-Objekten.
Batchtest / Dialogtest
werden Tests von Stapelprogrammen bzw. Tests fĂźr Dialogprogramme genannt.
Web-Test
Test von Internet- oder Intranet-Funktionen; auch Browsertest genannt.
Hardwaretest
Testen konkreter, Hardwarekomponenten betreffender Last- und anderer Kriterien - wie Netzlast, Zugriffszeit, Parallelspeichertechniken etc.
Klassifikation nach besonderen Sichtweisen
Die jeweilige Testart testet ...
Funktionale Sicht von Benutzern/Anwendern
⢠Geschäftsprozesstest: ... das Zusammenwirken von Programmteilen eines Geschäftsprozesses.
ähnlich wie End-to-End Test: ... Funktionen des Systems ßber alle Schritte hinweg (z. B. von der Benutzerschnittstelle bis zur Datenbank).
⢠Verhaltenstest (behaviour test): ... die Anwendung aus der Sicht von Benutzern; beicite-ref-tmsa-11-0[11] werden unterschieden:
Featuretest (oder Funktionstest): ... eine einzelne vom Benutzer ausfßhrbare Funktion. Fähigkeitstest (englisch: capability test): ... ob eine bestimmte Benutzertätigkeit i. Z. mit den getesteten Funktionen ausgefßhrt werden kann. Akzeptanztest (auch User Akzeptanztest UAT): ... ob die Software vor allem hinsichtlich ihrer Benutzeroberfläche definierte Anforderungen/Erwartungen erfßllt.
⢠Oberflächentest: ... die Benutzerschnittstellen des Systems (z. B. Verständlichkeit, Anordnung von Informationen, Hilfefunktionen); fßr Dialogprogramme auch GUI-Test oder UI-Test genannt.
Softwaretechnische Zusammenhänge
⢠Datenkonsistenztest: ... Auswirkung der getesteten Funktion auf die Korrektheit von Datenbeständen (Testbezeichnungen: Datenzyklustest, Wertebereichstest, Semantiktest, CRUD-Test)
⢠Wiederinbetriebnahmetest: ... ob ein System nach einem Abschalten oder Zusammenbruch (z. B. ausgelÜst durch einen Stresstest) wieder in Betrieb genommen werden kann.
⢠Installationstest: ... Routinen zur Softwareinstallation, ggfs. in verschiedenen Systemumgebungen (z. B. mit verschiedener Hardware oder unterschiedlichen Betriebssystemversionen)
⢠Stresstest: ... das Verhalten eines Systems unter Ausnahmesituationen.
⢠Crashtest: ist ein Stresstest, der versucht, das System zum Absturz zu bringen.
⢠lasttestLasttest: ... das Systemverhalten unter besonders hohen Speicher-, CPU-, o. ä. -Anforderungen. Besondere Arten von Last-Tests kÜnnen Multi-User-Tests (viele Anwender greifen auf ein System zu, simuliert oder real) und Stresstests sein, dabei wird das System an die Grenzen der Leistungsfähigkeit gefßhrt.
⢠Performance Test: ... ob bei bestimmten Speicher- und CPU-Anforderungen ein korrektes Systemverhalten sichergestellt ist.
⢠Rechnernetz-Test: ... das Systemverhalten in Rechnernetzen (z. B. VerzÜgerungen der Datenßbertragung, Verhalten bei Problemen in der Datenßbertragung).
⢠Sicherheitstest: ... potentielle Sicherheitslßcken.
Software-Qualitätsmerkmale
Aus den Qualitätsmerkmalen von Software (z. B. gem. ISO/IEC 9126 â die fĂźr die meisten Testanforderungen den Rahmen bilden kĂśnnen) lässt sich eine groĂe Anzahl von Tests ableiten. Testartbezeichnungen gemäà dieser Klassifikation sind zum Beispiel:
⢠Funktionaler Test bzw. Funktionstest: ... ein System in Bezug auf funktionale Anforderungsmerkmale wie Korrektheit und Vollständigkeit.
⢠Nicht-funktionaler Test: ... die nicht-funktionalen Anforderungen, wie z. B. die Sicherheit, die Gebrauchstauglichkeit oder die Zuverlässigkeit eines Systems. Beispiele fßr konkrete Testarten hierzu sind Sicherheitstest, Wiederanlauftest, GUI-Test, Installationstest, Lasttest. Dabei steht nicht die Funktion der Software (Was tut die Software?) im Vordergrund, sondern ihre Funktionsweise (Wie arbeitet die Software?).
⢠Fehlertest: ... ob die Verarbeitung von Fehlersituationen korrekt, d. h. wie definiert, erfolgt.
Weitere Klassifikationen fĂźr Testarten
Zeitpunkt der TestdurchfĂźhrung
⢠Die nach diesem Aspekt bedeutendsten und meist auch im allgemeinen Sprachgebrauch benutzten Testartbezeichnungen sind die Teststufen, die mit Komponententest, Integrationstest, Systemtest, Abnahmetest bezeichnet werden.
⢠Eine Testart fßr frßhe Tests ist der Alpha-Test (erste Entwicklertests). Ein Vorbereitungstest prßft zunächst nur wesentliche Funktionen. Im späteren Betatest prßfen ausgewählte Benutzer Vorabversionen der nahezu fertigen Software auf Tauglichkeit.
⢠Produktionstests werden in produktionsähnlich konfigurierten Testumgebungen oder gar in der Produktionsumgebung selbst, zum Teil sogar erst im produktiven Betrieb der Software (nur fßr unkritische Funktionen geeignet) durchgefßhrt. MÜglicher Grund: Nur die Produktionsumgebung verfßgt ßber bestimmte, zum Testen erforderliche Komponenten.
⢠Auch Test-Wiederholungen gehÜren zum Aspekt Testzeitpunkt: Solche Tests werden Regressionstest, Retest oder ähnlich genannt.
⢠Indirekt mit Zeitbezug sind zu nennen: Entwicklertest (vor Anwendertest ...), statisches Testen (vor dynamischem Testen).
Zum Testen ausgewählte methodische Ansätze
⢠Spezielle Teststrategien: SMART-Testing, Risk based testing, Data driven Testing, Exploratives Testen, top-down / bottom-up, hardest first, big-bang.
⢠Besondere Methoden sind fĂźr Entscheidungstabellentests, Use-Case- oder anwendungsfallbasierte Tests, ZustandsĂźbergangs-/zustandsbezogene Tests, Ăquivalenzklassentests, Mutationstests (gezieltes Verändern von Quelltextdetails zu Testzwecken) und Pair-wise-Tests die Grundlage fĂźr Testartbezeichnungen.
Testintensität
⢠Unterschiedliche Grade der Testabdeckung (Test-Coverage- bzw. Code-Coverage) werden mit Ăberdeckungstests erreicht, die (auf Grund der geringen GrĂśĂe der Testobjekte) besonders fĂźr Komponententests geeignet sind. Testartenbezeichnungen hierzu: Anweisungs- (C0-Test, C1-Test), Zweig-, Bedingungs- und PfadĂźberdeckungstest.
⢠Mit Vorbereitungstests werden vorerst nur wichtige Hauptfunktionen getestet.
⢠Ohne systematisch spezifizierte Testdaten/-fälle werden Smoketests ausgefĂźhrt, Tests, bei denen lediglich ausprobiert werden soll, ob das Testobjekt âĂźberhaupt irgendetwas tut - ohne abzurauchenâ â zum Beispiel im Rahmen eines Vorbereitungstests oder auch als finale Stichprobe beim Abschluss einer Teststufe.
⢠Beim Error Guessing provozieren (erfahrene) Tester bewusst Fehler.
Informationsstand Ăźber die zu testenden Komponenten
... der beim Spezifizieren/DurchfĂźhren von Tests genutzt wird:
⢠Black-Box-Tests werden ohne Kenntnisse ßber den inneren Aufbau des zu testenden Systems, sondern auf der Basis von Entwicklungsdokumenten entwickelt. In der Praxis werden Black-Box-Tests meist nicht von den Software-Entwicklern, sondern von fachlich orientierten Testern oder von speziellen Test-Abteilungen oder Test-Teams entwickelt. In diese Kategorie fallen auch Anforderungstests (Requirements Tests) (auf der Grundlage spezieller Anforderungen) und stochastisches Testen (statistische Informationen als Testgrundlage)
⢠White-Box-Tests, auch strukturorientierte Tests genannt, werden auf Grund von Wissen Ăźber den inneren Aufbau der zu testenden Komponente entwickelt. Entwicklertests sind i. d. R. White-Box-Tests - wenn Entwickler und Tester dieselbe Person sind. Hierbei besteht die Gefahr, dass Missverständnisse beim Entwickler zwangsläufig zu âfalschenâ Testfällen fĂźhren, der Fehler also nicht erkannt wird.
⢠Grey-Box-Test werden zum Teil Tests genannt, bei denen eine Kombination von White- und Blackbox-Tests parallel praktiziert wird bzw. die nur auf partiellen Codekenntnissen beruhen.cite-ref-12[12]
⢠Low-Level-Test/High-Level-Test: Fasst Testarten begrifflich danach zusammen, ob sie auf konkrete technische Komponenten ausgerichtet sind (wie Debugging, White-Box-Test fßr low-Level) oder aufgrund von Vorgaben zur Implementierung ausgefßhrt/spezifiziert werden, z. B. Requirementstest (Anforderungstest), Black-Box-Test fßr high-Level.
Wer fĂźhrt die Tests aus oder spezifiziert sie?
⢠Entwicklertests (Programmierertests), Benutzertests, Anwendertests, Benutzerakzeptanztests (User Acceptance Tests - UAT) werden von der jeweiligen Testergruppe durchgefßhrt.
⢠Abnahmetests fßhren die fachlich fßr die Software verantwortlichen Stellen aus.
⢠Betriebstest, Installationstests, Wiederanlauftests, Notfalltests nehmen u. a. auch Vertreter des âRechenzentrumsâ vor - zur Sicherstellung der Einsatzfähigkeit nach definierten Vorgaben.
⢠Crowd Testing; nach dem Prinzip des Crowdsourcing werden Testaufgaben an eine Menge von Usern im Internet (die Crowd) ausgelagert.
Art der SoftwaremaĂnahme
Diese Kategorie ist von eher untergeordneter Bedeutung; aus ihr resultieren Testbegriffe wie die folgenden:
⢠In Wartungsprojekten werden Wartungstests und Regressionstests ausgefßhrt; dabei werden i. d. R. bereits vorhandene Testfälle und Testdaten benutzt.
⢠In Migrationsprojekten werden Migrationstests durchgefßhrt; die Datenßberfßhrung und spezielle Migrationsfunktionen sind hierbei z. B. Testinhalte.
Weitere Teilaspekte beim Testen
Teststrategie
Pol, Koomen und Spillner beschreiben incite-ref-pks-1-5[1] die Teststrategie als umfassenden Ansatz: Eine Teststrategie ist notwendig, da ein vollständiger Test, d. h. ein Test, der alle Teile des Systems mit allen mÜglichen Eingabewerten unter allen Vorbedingungen ßberprßft, in der Praxis nicht durchfßhrbar ist. Deswegen muss in der Test-Planung anhand einer Risikoabschätzung festgelegt werden, wie kritisch das Auftreten eines Fehlers in einem Systemteil einzuschätzen ist (z. B. nur finanzieller Verlust oder Gefahr fßr Menschenleben) und wie intensiv (unter Berßcksichtigung der verfßgbaren Ressourcen und des Budgets) ein Systemteil getestet werden muss oder kann.
Demnach ist in der Teststrategie festzulegen, welche Teile des Systems mit welcher Intensität unter Anwendung welcher Testmethoden und -Techniken unter Nutzung welcher Test-Infrastruktur und in welcher Reihenfolge (siehe auch Teststufen) zu testen sind.
Sie wird vom Testmanagement im Rahmen der Testplanung erarbeitet, im Testplan dokumentiert und festgelegt und als Handlungsrahmen fĂźr das Testen (durch die Testteams) zu Grunde gelegt.
Nach einer anderen Interpretation wird âTeststrategieâ als methodischer Ansatz verstanden, nach dem das Testen angelegt wird.
So benennt z. B. ISTQB Ausprägungen fßr Teststrategien wie folgt:
⢠top-down: Haupt- vor Detailfunktionen testen; untergeordnete Routinen werden beim Test zunächst ignoriert oder (mittels âStubsâ) simuliert
⢠bottom-up: Detailfunktionen zuerst testen; Ăźbergeordnete Funktionen oder Aufrufe werden mittels âTestdriverâ simuliert
⢠hardest first: Situationsbedingt das Wichtigste zuerst
⢠big-bang: Alles auf einmal
Weitere Prinzipien und Techniken fĂźr Teststrategien sind:
⢠Risk based Testing: Testprinzip, nach dem die Testabdeckung an den Risiken ausgerichtet wird, die in den Testobjekten (fßr den Fall des Nichtfindens von Fehlern) eintreten kÜnnen.
⢠Data driven Testing: Testtechnik, mit der ßber Einstellungen in den Testscripts die Datenkonstellationen gezielt geändert werden kÜnnen, um damit mehrere Testfälle hintereinander effizient testen zu kÜnnen
⢠SMART: Testprinzip âSpecific, Measurable, Achievable, Realistic, time-boundâ
⢠framework based Testing: Test-Automatisierung mittels Testwerkzeugen fßr bestimmte Entwicklungsumgebungen / Programmiersprachen
⢠Testing nach ISO/IEC 25000: Die ISO/IEC-Norm 25000 ist ein Standard fßr Qualitätskriterien sowie Bewertungsmethoden fßr Software und Systeme. Dementsprechend kann ein Ansatz fßr eine Teststrategie auf den in dieser Norm vorhandenen Standards basieren.
Beispiel fĂźr Risikobasiertes Testen - nach der RPI-Methode
Grundsätzlich ist es aus Grßnden der Zeit und/oder den finanziellen Mitteln niemals mÜglich, eine Software (oder Teile einer Software) komplett zu testen. Aus diesem Grund ist es wichtig, Tests gemäà der Bedeutung des zu testenden Software-Bestandteils zu priorisieren. Eine bewährte Methode zur Priorisierung von Tests ist die risikobasierte Methode, auch RPI-Methode genannt, wobei RPI fßr Risiko-Prioritäts-Index steht.
In der RPI-Methode werden zuerst die Anforderungen zu Gruppen zugeordnet. AnschlieĂend werden Kriterien definiert, welche fĂźr das Endprodukt von Bedeutung sind. Diese Kriterien werden später verwendet, um die Anforderungsgruppen zu bewerten. Nachfolgend wird auf die drei Kriterien eingegangen, welche sich aus der Praxis bewährt haben. Mit den aufgezeigten Fragen soll es mĂśglichst gut gelingen, die Anforderungen zu unterscheiden, womit die Bewertung ermĂśglicht wird.
Businessrelevanz
⢠Wie groà ist der Nutzen fßr den/die Endanwender?
⢠Wie groà ist der Schaden bei Nichterfßllung dieser Anforderung?
⢠Wie viele Endanwender wären betroffen, wenn diese Anforderung nicht erfßllt wird?
⢠Wie wichtig ist diese Anforderung gegenßber anderen Anforderungen? Muss/soll/kann sie erfßllt werden?
Auffindbarkeit
⢠Ist der Fehler bzw. ein Nichterfßllen der Anforderung schnell auffindbar?
⢠Wird der Fehler ßberhaupt bemerkt?
⢠Wie wird der Fehler ersichtlich?
⢠Findet jeder den Fehler oder eher Anwender, welche erweitertes Wissen gegenßber dem Produkt vorweisen?
Komplexität
⢠Wie komplex ist die Anforderung?
⢠Wie sehr ist die Anforderungen von anderen Teilen abhängig? Wie viele andere Anforderungen hängen davon ab?
⢠Wie komplex ist die Umsetzung der Anforderung?
⢠Sind Technologien im Einsatz, welche eher einfach oder komplex sind?
Sobald die Anforderungen gruppiert und die Kriterien definiert wurden, durchlaufen sämtliche Anforderungsgruppen die drei Kriterien. Die Anforderungen werden von 1 bis 3 bewertet, wobei 3 dem hÜchsten Wert (bezgl. Wichtigkeit) darstellt (fßr eine breitere Verteilung der Anforderungen kann die Skala beliebig angepasst werden). Ist dies getan, wird das Produkt aus den drei bewerteten Kriterien gebildet - woraus sich die Wichtigkeit der Anforderungen ergibt.
Erläuterungen zur Teststrategie nach ISO 25000
ISO 25000 definiert 8 Dimensionencite-ref-13[13] fßr Software-Qualitätsmerkmale. Diese Dimensionen sind die folgenden:
⢠Funktionale Eignung (Ist die geforderte Funktionalität in der Software gegeben?):
⢠Angemessenheit
⢠Richtigkeit
⢠Interoperabilität
⢠OrdnungsmäĂigkeit
⢠Zuverlässigkeit (Wie zuverlässig arbeitet die Software?):
⢠Reife
⢠Fehlertoleranz
⢠Wiederherstellbarkeit
⢠Benutzbarkeit (Ist die Software einfach bedienbar?):
⢠Verständlichkeit
⢠Erlernbarkeit
⢠Bedienbarkeit
⢠Leistungseffizienz (Wie effizient arbeitet die Software?):
⢠Zeitverhalten
⢠Verbrauchsverhalten
⢠Wartbarkeit (Wie leicht lässt sich die Software modifizieren?):
⢠Analysierbarkeit
⢠Modifizierbarkeit
⢠Stabilität
⢠Prßfbarkeit
⢠Anpassbarkeit
⢠Ăbertragbarkeit (Wie leicht lässt sich die Software auf ein anderes System portieren?):
⢠Anpassbarkeit
⢠Installierbarkeit
⢠Konformität
⢠Austauschbarkeit
⢠Sicherheit (Wie sicher sind unsere Daten und Programme vor nicht autorisiertem Zugriff?):
⢠Zugriffssicherheit
⢠Datenverschlßsselung
⢠Kompatibilität (Wie kompatibel ist die Software beim Austausch und der Verarbeitung von Daten mit und von anderen Systemen?):
⢠Austauschbarkeit
⢠Erweiterbarkeit
⢠Abwärtskompatibilität
Die Teststrategie ist auf diese 8 auf Erfahrungen und Standards basierenden Qualitätsmerkmale ausgerichtet. Durch gezielt dafĂźr erstellte Testfälle soll sichergestellt werden, dass diese Kriterien von der zu testenden Software â soweit relevant â eingehalten/unterstĂźtzt werden.
Sieben Grundsätze des Testens
Die Sieben Grundsätze des Softwaretestens liefern nach ISTQB CTFL Syllabuscite-ref-ctfl-syllabus4-0-1d-14-0[14] generelle allgemeine Richtlinien fßr alle Tests.
1. Testen zeigt die Anwesenheit von Fehlerzuständen, nicht deren Abwesenheit Mit Testen lässt sich (nach Spillner und Linzcite-ref-0-4-2[4]) nicht beweisen, dass keine Fehlerzustände im Testobjekt vorhanden sind. Selbst wenn keine Fehlerwirkungen im Test aufgezeigt wurden, ist dies kein Nachweis fßr Fehlerfreiheit oder Korrektheit. Testen reduziert die Wahrscheinlichkeit, dass noch unentdeckte Fehlerzustände in der Software vorhanden sind, aber auch wenn keine Fehlerzustände gefunden werden, ist Testen kein Beweis dafßr, dass es keine Fehlerzustände gibt.cite-ref-ctfl-syllabus4-0-1d-14-1[14]
2. Vollständiges Testen ist nicht mÜglich Mit Ausnahme von sehr trivialen Testobjekten ist ein vollständiger Test, bei dem alle mÜglichen Eingabewerte und deren Kombinationen unter Berßcksichtigung aller unterschiedlichen Vorbedingungen ausgefßhrt werden, nicht durchfßhrbar.cite-ref-ctfl-syllabus4-0-1d-14-2[14] Tests sind immer nur Stichproben, und der Testaufwand ist deshalb nach Risiko und Prioritäten zu steuern.cite-ref-0-4-3[4]
3. FrĂźhes Testen (Shift left) spart Zeit und Geld Testaktivitäten sollten so frĂźh wie mĂśglich im Softwareentwicklungslebenszyklus gestartet werden, um Fehlerzustände frĂźhzeitig zu erkennen.cite-ref-ctfl-syllabus4-0-1d-14-3[14] Das hilft dabei, im Softwareentwicklungslebenszyklus späte und damit kostenintensive Ănderungen zu vermeiden.cite-ref-0-4-4[4]
4. Fehlerzustände treten gehäuft auf Die meisten Fehlerzustände finden sich in der Regel in nur wenigen Teilen (Modulen) eines Systems.cite-ref-0-4-5[4] Das Phänomen, dass eine kleine Anzahl von Komponenten eines Systems häufig die meisten der entdeckten Fehlerzustände enthält bzw. fßr die meisten Fehlerwirkungen im Betrieb verantwortlich ist, ist eine Veranschaulichung des Pareto-Prinzips. Vorausgesagte Anhäufungen von Fehlerzuständen und die tatsächlich beobachteten Fehlerzustände im Test oder im Betrieb sind ein wichtiger Beitrag fßr den risikobasierten Test bzw. zur Risikoanalyse, die genutzt wird, um den Testaufwand zu konzentrieren.cite-ref-ctfl-syllabus4-0-1d-14-4[14]
5. Tests nutzen sich ab (frĂźher auch âVorsicht vor dem Pestizid-Paradoxonâ) Werden Tests nur unverändert wiederholt, decken sie keine neuen Fehlerwirkungen mehr auf. Damit die Effektivität der Tests nicht absinkt, sind die vorhandenen Testfälle regelmäĂig zu prĂźfen und zu ergänzen.cite-ref-0-4-6[4] In einigen Fällen kann die Wiederholung der gleichen Tests jedoch zu einem positiven Ergebnis fĂźhren, z. B. bei automatisierten Regressionstests.cite-ref-ctfl-syllabus4-0-1d-14-5[14]
6. Testen ist kontextabhängig Es gibt keinen universell anwendbaren Ansatz fßr das Testen. Das Testen wird in verschiedenen Kontexten unterschiedlich praktiziert.cite-ref-15[15] Je nach Einsatzgebiet und Umfeld des zu prßfenden Systems ist das Testen (Intensität, Definition der Endekriterien usw.) entsprechend seines Einsatzumfelds anzupassen.cite-ref-0-4-7[4]
7. Trugschluss: âKeine Fehler bedeutet ein brauchbares Systemâ Es ist ein Irrtum zu erwarten, dass das Verifizieren von Software den Erfolg eines Systems sicherstellt.cite-ref-ctfl-syllabus4-0-1d-14-6[14] Trotz grĂźndlicher Tests der Anforderungen und Beheben aller gefundenen Fehlerzustände kann ein System entwickelt worden sein, das schwer zu nutzen ist, die BedĂźrfnisse der Nutzer nicht erfĂźllt oder eine geringe Qualität aufweist im Vergleich zu anderen Systemen (oder dem Vorgängersystem).cite-ref-0-4-8[4] Neben der Verifizierung sollte auch eine Validierung durchgefĂźhrt werden.cite-ref-16[16] Zur Vermeidung des Problems empfehlen Spillner und Linzcite-ref-0-4-9[4] die frĂźhzeitige Einbeziehung der späteren Nutzer in den Entwicklungsprozess und die Nutzung von Prototyping als vorbeugende MaĂnahmen.
Dokumentation
Testplan
Beschreibt Umfang, Vorgehensweise, Terminplan, Testgegenstände.
Testdesignspezifikation
Beschreibt die im Testplan genannten Vorgehensweisen im Detail.
Testfallspezifikationen
Beschreibt die Umgebungsbedingungen, Eingaben und Ausgaben eines jeden Testfalls.
Testablaufspezifikationen
Beschreibt in Einzelschritten, wie jeder Testfall durchzufĂźhren ist.
TestobjektĂźbertragungsbericht
Protokolliert, wann welche Testgegenstände an welche Tester ßbergeben wurden.
Testprotokoll
Listet chronologisch alle relevanten Vorgänge bei der Testdurchfßhrung.
Testvorfallbericht
Listet alle Ereignisse, die eine weitere Untersuchung erforderlich machen.
Testergebnisbericht
Beschreibt und bewertet die Ergebnisse aller Tests.
Testautomatisierung
â
Hauptartikel
:
Testautomatisierung
Insbesondere bei Tests, die häufig wiederholt werden, ist deren Automatisierung angeraten. Dies ist vor allem bei Regressionstests und bei testgetriebener Entwicklung der Fall. Darßber hinaus kommt Testautomatisierung bei manuell nicht oder nur schwer durchfßhrbaren Tests zum Einsatz (z. B. Lasttests).
⢠Durch Regressionstests wird nach Softwareänderungen meist im Zuge des System- oder Abnahmetests der fehlerfreie Erhalt der bisherigen Funktionalität ßberprßft.
⢠Bei der testgetriebenen Entwicklung werden die Tests im Zuge der Softwareentwicklung im Idealfall vor jeder Ănderung ergänzt und nach jeder Ănderung ausgefĂźhrt.
Bei nicht automatisierten Tests ist in beiden Fällen der Aufwand so groĂ, dass häufig auf die Tests verzichtet wird.
Ăbersichten / Zusammenhänge
Begriffe beim Testen
Die nebenstehende Grafik zeigt Begriffe, die im Kontext 'Testen' auftreten â und wie sie mit anderen Begriffen in Verbindung stehen.
Schnittstellen beim Testen
Die Grafik zeigt die wichtigsten Schnittstellen, die beim Testen auftreten. Zu den von Thallercite-ref-thaller2002-19-0[19] genannten 'Partnern' beim Testen wird nachfolgend beispielhaft angefĂźhrt, was jeweils kommuniziert bzw. ausgetauscht wird.
⢠Projektmanagement: Termin- und Aufwandsrahmen, Status je Testobjekt ('testready'), Dokumentationssysteme
⢠Linienmanagement (und Linienabteilung): Fachlicher Support, Testabnahme, fachliche Tester stellen
⢠Rechenzentrum: Testumgebung(en) und Testwerkzeuge bereitstellen und betreiben
⢠Datenbankadministrator: Testdatenbestände installieren, laden und verwalten
⢠Konfigurations-Management: Testumgebung einrichten, Integrieren der neuen Software
⢠Entwicklung: Test-Basisdokumente, Prßflinge, Support zum Testen, Testergebnisse erÜrtern
⢠Problem- und CR-Management: Fehlermeldungen, Rßckmeldung zum Retest, Fehlerstatistik
⢠Lenkungsausschuss: Entscheidungen zur Test(stufen)abnahme oder zum Testabbruch
Literatur
⢠Andreas Spillner, Tilo Linz: Basiswissen Softwaretest. Aus- und Weiterbildung zum Certified Tester. Foundation Level nach ISTQB-Standard. 5., ßberarbeitete und aktualisierte Auflage. dpunkt.verlag, Heidelberg 2012, ISBN 978-3-86490-024-2.
⢠Harry M. Sneed, Manfred Baumgartner, Richard Seidl: Der Systemtest - Von den Anforderungen zum Qualitätsnachweis. 3., aktualisierte und erweiterte Auflage. Carl Hanser, Mßnchen 2011, ISBN 978-3-446-42692-4.
⢠Georg Erwin Thaller: Software-Test. Verifikation und Validation. 2., aktualisierte und erweiterte Auflage. Heise, Hannover 2002, ISBN 3-88229-198-2.
⢠Richard Seidl, Manfred Baumgartner, Thomas Bucsics, Stefan Gwihs: Basiswissen Testautomatisierung - Konzepte, Methoden und Techniken. 2., aktualisierte und ßberarbeitete Auflage. dpunkt.verlag, 2015, ISBN 978-3-86490-194-2.
⢠Mario Winter, Mohsen Ekssir-Monfared, Harry M. Sneed, Richard Seidl, Lars Borner: Der Integrationstest. Von Entwurf und Architektur zur Komponenten- und Systemintegration. Carl Hanser, 2012, ISBN 978-3-446-42564-4.
⢠Bill Laboon: A Friendly Introduction to Software Testing. CreateSpace Independent, 2016, ISBN 978-1-5234-7737-1.
Weblinks
Commons
: Softwaretest
â Sammlung von Bildern, Videos und Audiodateien
Wiktionary: Softwaretest
â Bedeutungserklärungen, Wortherkunft, Synonyme, Ăbersetzungen
⢠Glossar âTestbegriffeâ von ISTQB
⢠Ausfßhrliche Auflistung von Testmanagement Software und Erläuterung der Management Werkzeugarten im Softwaretest
⢠Testtool Review - Informations-Portal ßber das internationale Marktangebot im Bereich Softwaretest-Werkzeuge
Einzelnachweise
cite-note-pks-11. â Martin Pol, Tim Koomen, Andreas Spillner: Management und Optimierung des Testprozesses. Ein praktischer Leitfaden fĂźr erfolgreiches Testen von Software mit TPI und TMap. 2., aktualisierte Auflage. dpunkt.Verlag, Heidelberg 2002, ISBN 3-89864-156-2.
cite-note-33. â Ernst Denert: Software-Engineering. Methodische Projektabwicklung. Springer, Berlin u. a. 1991, ISBN 3-540-53404-0.
cite-note-0-44. â Andreas Spillner, Tilo Linz: Basiswissen Softwaretest: Aus- und Weiterbildung zum Certified Tester, Foundation Level, nach ISTQB-Standard. 6. Auflage. dpunkt.verlag, Heidelberg 2019, ISBN 978-3-86490-583-4.
cite-note-rule-of-10-55. â Fehlerkosten 10er Regel Zehnerregel (Rule of ten). In: SixSigmaBlackBelt.de. 19. Juni 2021, abgerufen am 5. April 2022.
cite-note-code-complete-66. â Steve McConnell: Code Complete. A Practical Handbook of Software Construction. 2. Auflage. Microsoft Press, 2004, ISBN 978-0-7356-1967-8, S. 470 (englisch, 960 S.): âUnit test: Lowest Rate 15%, Modal Rate 30%, Highest Rate 50%; Integration test: Lowest Rate 25%, Modal Rate 35%, Highest Rate 40%; System test: Lowest Rate 25%, Modal Rate 40%, Highest Rate 55%â
cite-note-77. â Capers Jones: Software Engineering Best Practices. Lessons from Successful Projects in the Top Companies. Mc Graw Hill, 2010, ISBN 978-0-07-162162-5, S. 660 (englisch, 960 S.).
cite-note-88. â David Longstreet: Test Cases & Defects. Softwaremetrics, archiviert vom Original am 8. Februar 2019; abgerufen am 8. September 2022 (englisch): âThe number of acceptance test cases can be estimated by multiplying the number of function points by 1.2â
cite-note-99. â ISTQB Certified Tester Foundation Level Syllabus Version 2011 1.0.1 International Software Testing Qualifications Board. Abgerufen am 20. Mai 2019. , Deutschsprachige Ausgabe. Herausgegeben durch Austrian Testing Board, German Testing Board e. V. & Swiss Testing Board, Kap. 1.4
cite-note-1010. â Peter Liggesmeyer: Software-Qualität. Testen, Analysieren und Verifizieren von Software. Spektrum Akademischer Verlag, Heidelberg u. a. 2002, ISBN 3-8274-1118-1, S. 34.
cite-note-tmsa-1111. â Toby Clemson: Testing Strategies in a Microservice Architecture. In: Martin Fowler. 18. November 2014, abgerufen am 13. März 2017 (englisch).
cite-note-1212. â Tobias Weber, Uni KĂśln, Planung von Softwareprojekten (Memento vom 9. August 2016 im Internet Archive) White Black and Grey Box Test
cite-note-1313. â Dominique Portmann: The Noser Way of Testing. Hrsg.: Noser Engineering AG. 7. Auflage. Januar 2016.
cite-note-ctfl-syllabus4-0-1d-1414. â ISTQB Certified Tester Foundation Level Syllabus Version 2023 4.0.1D International Software Testing Qualifications Board. Abgerufen am 25. Januar 2024. Deutschsprachige Ausgabe. Herausgegeben durch Austrian Testing Board, German Testing Board e. V. & Swiss Testing Board, Kap. 1.3
cite-note-1515. â Cem Kaner, James Bach, Bret Pettichord: Lessons Learned in Software Testing: A Context-Driven Approach. 1. Auflage. John Wiley & Sons, 2011, ISBN 978-1-118-08055-9.
cite-note-1616. â Barry W. Boehm: Software Engineering Economics. Hrsg.: Prentice-Hall. 1. Auflage. 1981.
cite-note-1717. â IEEE Standard for Software Test Documentation (IEEE Std. 829-1998)
cite-note-1818. â IEEE Standard for Software and System Test Documentation (IEEE Std. 829-2008)
cite-note-thaller2002-1919. â Georg Erwin Thaller: Software-Test. Verifikation und Validation. 2., aktualisierte und erweiterte Auflage. Heise, Hannover 2002, ISBN 3-88229-198-2.